import utils from '@bApi/util/utils.js'

var numeral = require('numeral')
const DEFAULT_CURRENCY = 'CNY'
/*
CNY    人民币    ￥
EUR    欧元    &
GBP    英镑    ￡
HKD    港币    HK$
JPY    日元    ￥
USD    美元    $
MOP    澳门元    MOP$
TWD    新台币    NT$
NZD    新西兰元    NZ$
AUD    澳大利亚元    A$ */
const CURRENCY_SYMBOL = {'CNY' : '￥', 'EUR' : '&', 'GBP' : '￡', 'HKD' : 'HK$', 'JPY' : '￥', 'USD' : '$', 
'MOP' : 'MOP$', 'TWD' : 'NT$', 'NZD' : 'NZ$', 'AUD' : 'A$'}
const moneyUtil = {
  /**
   * 金额加货币符号并四舍五入
   * @param {*} value
   * @param {*} Digits
   */
  currencyAndToFixed(value, currency = DEFAULT_CURRENCY, Digits = 2) {
    return CURRENCY_SYMBOL[currency] + value.toFixed(Digits)
  },
  /**
   * 字符串类型数字四舍五入
   * @param {*} value 
   * @param {*} Digits 
   */
  strToFixed(value, Digits = 2){
    if(typeof value == 'undefined' || value == null){
      return value
    }
    let number = numeral(value).value()
    if(isNaN(number)){
      return value
    }
    return number.toFixed(Digits)
  },
  /**
   * 数组类型四舍五入
   * @param {*} value 数值类型
   * @param {*} Digits 小数点后几位
   */
  toFixed(value, Digits = 2) {
    return value.toFixed(Digits)
  },
  /**
   * 币种表示符号转货币符号
   * @param {*} currency 币种表示符号
   */
  currencySymbol(currency) {
    return CURRENCY_SYMBOL[currency]
  },
  /**
   * 金额加货币符号
   * @param {*} value 金额
   * @param {*} currency 币种表示符号 默认CNY
   */
  currency(value, currency = DEFAULT_CURRENCY) {
    return CURRENCY_SYMBOL[currency] + value
  },
  /**
   * 金额格式化
   * @param {} value  当前值
   * @param {*} format 默认格式  '0,0.00'
   */
  money(value, format = '0,0.00') {
    return numeral(value).format(format)
  },
  /**
   * 带币种符号   金额格式化
   * @param {} value 金额
   * @param {*} currency 币种表示符号 默认CNY
   * @param {*} format 默认格式  '0,0.00'
   */
  currMoney(value, currency = DEFAULT_CURRENCY, format = '0,0.00') {
    return CURRENCY_SYMBOL[currency] + numeral(value).format(format)
  },
  /**
   *  +
   * @param {*} val1
   * @param {*} val2
   */
  add(val1, val2) {
    var number1 = numeral(val1)
    var number2 = numeral(val2)
    return number1.add(number2.value()).value()
  },
  /**
   * -
   * @param {} val1
   * @param {*} val2
   */
  subtract(val1, val2) {
    // 减 -
    var number1 = numeral(val1)
    var number2 = numeral(val2)
    return number1.subtract(number2.value()).value()
  },
  multiply(val1, val2) {
    // 乘 *
    var number1 = numeral(val1)
    var number2 = numeral(val2)
    return number1.multiply(number2.value()).value()
  },
  divide(val1, val2) {
    // 除 /
    var number1 = numeral(val1)
    var number2 = numeral(val2)
    return number1.divide(number2.value()).value()
  },
  omitShow(str, n = 15) {
    if (str == null) {
      return str
    }
    if (str.length > n) {
      str = str.substring(0, n) + '...'
    }
    return str
  },
}

export default moneyUtil
